# 等高线图
import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
    # return height function
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)

n = 256

x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)

X, Y = np.meshgrid(x, y) # 定义网格
plt.contourf(X, Y, f(X, Y), 8, alpha=0.75, cmap=plt.cm.hot) # fill等高线的颜色
# 0是两部分；8:分成10部分
# cmap.cm.hot: y的值：每一个值对应一个颜色的点
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=.5) # 绘制等高线

plt.clabel(C, inline=True, fontsize=10)
plt.xticks(())
plt.yticks(())
plt.show()